Skip to content

hermes-agent: restore packaged-install parity - #297394

Draft
dot-agi wants to merge 1 commit into
Homebrew:mainfrom
dot-agi:hermes-agent-nix-parity
Draft

hermes-agent: restore packaged-install parity#297394
dot-agi wants to merge 1 commit into
Homebrew:mainfrom
dot-agi:hermes-agent-nix-parity

Conversation

@dot-agi

@dot-agi dot-agi commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

  • Have you followed the guidelines for contributing?
  • Have you ensured that your commits follow the commit style guide?
  • Have you checked that there aren't other open pull requests for the same formula update/change?
  • Have you built your formula locally with HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>?
  • Is your test running fine brew test <formula>?
  • Does your build pass brew audit --strict <formula> (after doing HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>)? If this is a new formula, does it pass brew audit --new <formula>?

  • I did not use AI/LLM to create this PR, or I disclosed the tool/model below and reviewed its output; I did not attribute commits to AI and will answer maintainer questions and review comments myself without AI/LLM.

AI-assisted contribution by Claude Code (Claude Fable 5, model claude-fable-5) for ~95% of the work (upstream packaging research, formula change, and running the validation). Build, test and audit were executed by the AI on the contributor's machine; the contributor reviewed the design, the diff and this description.

Built and tested locally on macOS 26 (Tahoe) running arm64, and on Linux arm64 from source in the homebrew/brew Docker container.

Draft until #297327 lands — the first commit here is that PR's; this branch will be rebased exactly once after it merges, before being marked ready.

Restores packaged-install parity with upstream's own Nix packaging (nix/hermes-agent.nix — the env-var wrapper interface upstream kept for packaged installs after removing brew/PyPI as channels in NousResearch/hermes-agent#68217). Today's brew install ships no bundled skills/plugins/locales, no web dashboard, no TUI, and hermes self-downloads node/ripgrep into ~/.hermes (and tirith from GitHub releases) at runtime.

What this change does:

  • Ships the bundled data dirs (skills, optional-skills, plugins, locales, optional-mcps) into pkgshare, pruned like Nix's source filters.
  • Builds the web dashboard (web/, vite) and TUI (ui-tui/, esbuild) with npm at build time — same as upstream's nix/web.nix / nix/tui.nix. First npm-registry access for this formula; bottles grow roughly 25 MB.
  • Wraps hermes, hermes-agent, hermes-acp with the same ten HERMES_* env vars the Nix wrapper sets.
  • Adds node, ripgrep, tirith as runtime deps, replacing the runtime self-downloads; hermes doctor flips ripgrep/Node to ✓. ffmpeg stays optional via caveats. (node rather than node@22: upstream pins for reproducibility, not compatibility; node@22 is the fallback if CI disagrees.)
  • revision 1 so bottles rebuild with the new payload.

Test rationale: assert_match "bundled", shell_output("#{bin}/hermes plugins list") exercises the wrapper env mechanism directly and discriminates: via the bare venv entry point it matches 0 times; via the wrapper, 89. (skills list couldn't be used — bundled-skill seeding only runs in interactive setup/update flows, not under brew test's isolated $HOME.)

@github-actions github-actions Bot added autosquash Automatically squash pull request commits according to Homebrew style. nodejs Node or npm use is a significant feature of the PR or issue python Python use is a significant feature of the PR or issue rust Rust use is a significant feature of the PR or issue labels Aug 6, 2026
Mirror upstream's nix/hermes-agent.nix packaging (the interface upstream
kept for packaged installs): ship the bundled data dirs (skills,
optional-skills, plugins, locales, optional-mcps), build the web
dashboard and TUI bundles with npm like nix/web.nix and nix/tui.nix do,
and wrap the entry points with the HERMES_* env vars. Add node, ripgrep
and tirith as runtime dependencies to replace hermes-agent's runtime
self-downloads into ~/.hermes; ffmpeg stays optional via caveats.
Without this, a brew install has no builtin skills, no dashboard, no
TUI, and downloads node/ripgrep/tirith at runtime.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosquash Automatically squash pull request commits according to Homebrew style. nodejs Node or npm use is a significant feature of the PR or issue python Python use is a significant feature of the PR or issue rust Rust use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant